﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using BadgeManager.Controller;
using BadgeManager.Model;

namespace Badge_Manager.View
{
    public partial class frmTesseraMancante : Form
    {
        private Corso Corso;
        private List<Alunno> Alunni;
        private Utente Utente;

        public frmTesseraMancante(Utente Utente)
        {
            InitializeComponent();
            this.Utente = Utente;
            Corso = new Corso();
            ElencoCorsi();
        }

        private void ScartaTessera()
        {
            Alunno AlunnoDaCancellare =
                Alunni.Find(delegate(Alunno a) { return a.Tessera.Codice == txtCodiceTessera.Text; });

            if (AlunnoDaCancellare != null)
            {
                Alunni.Remove(AlunnoDaCancellare);

                if (new ctrlUtente().isSuperAdmin(Utente))
                {
                    if (chkDisabilitaTessera.Checked)
                    {
                        DisabilitaTessera(txtCodiceTessera.Text);
                    }
                    //aggiorna la griglia con le persone restanti
                    grid.DataSource = null;
                    grid.DataSource = Alunni;
                    FormattaGriglia();

                    txtCodiceTessera.Text = "";
                }
                else
                    MessageBox.Show("Non hai i permessi di super admin per poter disabilitare la tessera"); return;
            }
            else
                MessageBox.Show("Questa tessera non fa riferimento a nessun alunno in questo contesto"); txtCodiceTessera.Text = "";
        }

        private void RegistraMovimento(Tessera Tessera)
        {
            new ctrlMovimentiTessere().RegistraMovimento(Tessera, "Disabilitata");
        }

        private void DisabilitaTessera(string codice)
        {
            if (txtCodiceTessera.Text == "") { return; }

            Tessera Tessera = new Tessera();
            Tessera.Codice = txtCodiceTessera.Text.ToString();
            new ctrlTessera().DisabilitaTessera(Tessera);

            RegistraMovimento(Tessera);
        }

        private void cmdAnnulla_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //ricarica da database l'elenco degli alunni nel corso
        private void ElencoAlunniCheFrequentanoIlCorso()
        {
            Alunni = new ctrlPersona().SelezionaAlunniCheFrequentanoUnCorso(Corso);
            grid.DataSource = null;
            grid.DataSource = Alunni;

            FormattaGriglia();
        }

        private void FormattaGriglia()
        {
            grid.Columns["Id"].Visible = false;
            grid.Columns["Tessera"].Visible = false;
            grid.Columns["Note"].Visible = false;
        }

        private void ElencoCorsi()
        {
            cmbCorsi.DataSource = null;
            cmbCorsi.DataSource = new ctrlCorso().SelectAll();
        }

        private void cmbCorsi_SelectedValueChanged(object sender, EventArgs e)
        {
            Corso = (Corso)cmbCorsi.SelectedItem;
            ElencoAlunniCheFrequentanoIlCorso();
        }

        private void txtCodiceTessera_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Return &&
                grid.Rows.Count > 0)
            {
                ScartaTessera();
            }
        }
    }
}